package com.shengapp.api;

import com.shengapp.models.ApiRet;
import com.shengapp.models.Config;
import com.shengapp.util.HttpUtil;
import org.json.JSONArray;

import java.util.HashMap;
import java.util.Map;

/**
 * @Author: sheng-app
 * @Date: 2021/7/26 15:56
 */
public class Card extends Client {

    public Card(Config config) {
        this.key = config.key;
        this.secret = config.secret;
        this.url = config.url;
    }

    /**
     * 返回所有卡券菜单
     *
     * @return
     */
    public ApiRet getMenuAndProduct() {
        Map<String, String> params = new HashMap<>(10);
        params.put("type", String.valueOf(TYPE_CARD));
        params.put("storeCode", "0");
        return new HttpUtil(url, key, secret).send("/getMenuAndProduct", params, false);
    }

    /**
     * 确认页面使用。需要把最小时间和最长时间显示给客户看。
     * 并且该时间建议带到订单页面，用倒计时显示给客户看。
     * 接口有营业时间限制：肯德基7:00-23:00、奈雪的茶10:00-22:00
     *
     * @return
     */
    public ApiRet getPricesCard(JSONArray products) {
        Map<String, String> params = new HashMap<>(10);
        params.put("type", String.valueOf(TYPE_CARD));
        params.put("products", products.toString());
        ApiRet apiRet = new HttpUtil(url, key, secret).send("/getPrices", params, false);
        return apiRet;
    }

    /**
     * 提交订单接口，使用POST。提交后需要确认订单才发货。
     * 接口有营业时间限制：电影票7:00-24:00、肯德基7:00-23:00、奈雪的茶10:00-22:00、卡券不限制
     *
     * @param mobile           手机号
     * @param supplierCode     供应商号
     * @param partnerOrderCode 调用方订单号
     * @param productInfo      产品信息
     * @return
     */
    public ApiRet addOrderCard(String mobile, String supplierCode, String partnerOrderCode, JSONArray productInfo) {
        Map<String, String> params = new HashMap<>(10);
        params.put("type", String.valueOf(TYPE_CARD));
        params.put("mobile", mobile);
        params.put("supplierCode", supplierCode);
        params.put("partnerOrderCode", partnerOrderCode);
        params.put("productInfo", productInfo.toString());
        return new HttpUtil(url, key, secret).send("/addOrder", params, true);
    }
}
